小编典典

什么时候应该使用 Flask.g?

all

在 Flask 0.10
中,我看到它将从请求上下文转移到应用程序上下文,这让我对.g``g

我的理解(对于 Flask 0.9)是:

  • g存在于请求上下文中,即在请求开始时重新创建,并且在请求结束之前可用
  • g旨在用作“请求黑板”,我可以在其中放置与请求持续时间相关的内容(即,在请求的开头设置一个标志并在最后处理它,可能来自before_request/after_request对)
  • 除了保持请求级状态之外,g还可以而且应该用于资源管理,即保持数据库连接等。

这些句子中的哪一个在 Flask 0.10 中不再正确?有人可以指出我讨论更改 原因的资源吗? 我应该在 Flask 0.10
中使用什么作为“请求黑板” -
我应该创建自己的应用程序/扩展特定线程本地代理并将其推送到上下文堆栈before_request吗?如果我的应用程序存在很长时间(不像请求)并且因此资源永远不会被释放,那么在应用程序上下文中进行资源管理有什么意义?


阅读 189

收藏
2022-06-25

共1个答案

小编典典

由 Markus
链接的
Advanced Flask
Patterns
解释了g0.10中的一些更改:

  • g现在生活在应用程序上下文中。
  • 每个请求都会推送一个新的应用程序上下文,擦除旧的应用程序上下文,因此g仍可用于为每个请求设置标志,而无需更改代码。
  • 调用后 会弹出应用程序上下文teardown_request。(Armin 的演示文稿解释说这是因为创建数据库连接之类的任务是为请求 设置 环境的任务,不应在内部处理before_requestand after_request
2022-06-25